package com.adcc.swingui.base;

import java.awt.Container;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JComponent;

import org.apache.log4j.Logger;
/**
 * 面板超类
 * 所有的主页显示继承这个类
 * @author charlie
 *
 */
public abstract class DefaultPanel {
	private static Logger logger = Logger.getLogger(DefaultPanel.class);
	/**
	 * 面板map
	 */
	protected static Map<String, DefaultPanel> panelMap = new HashMap<String, DefaultPanel>();
	/**
	 * 面板源
	 */
	protected JComponent sourceComp ;
	/**
	 * swing框架容器
	 */
	protected Container container;
	/**
	 * 名称
	 */
	protected String name = this.getClass().getName();
	
	public DefaultPanel(Container container) {
		this.container = container;
	}
	/**
	 * 需要被重写工具构造器
	 * @return
	 */
	protected abstract JComponent build();
	/**
	 * 国际化  如果panel里面是放入另外一个panel，就无需国际化，在另外一个panel中国际化就行
	 */
	protected abstract void i18n();
	/**
	 * 外部调用工具构造器
	 * @param name 控件名称
	 * @return
	 */
	public JComponent buildPanel(String name) {
		this.sourceComp = build();
		i18n();
		if(panelMap.containsKey(name)) {
			logger.warn(name + "面板缓存map对象已经存在");
		}
		panelMap.put(name, this);
		
		return this.sourceComp;
	}
	
	
	/**
	 * 获取源
	 * @return
	 */
	public JComponent getSourceComp() {
		return sourceComp;
	}
	
	/**
	 * 工具集合
	 * @return
	 */
	public static Map<String, DefaultPanel> getToolMap() {
		return panelMap;
	}
}
